#ifndef _ARMEPRINCIPALE_H_
#define _ARMEPRINCIPALE_H_

#include "Tir.h"


/*! \mainpage Documentation du projet Poireau
 * Le projet Poireau a été mené par MORIN Robin, SIMON Pierre et VU Benjamin dans le cadre d'un enseignement
 * universitaire portant sur la conception d'un projet informatique qui a conduit à la conception
 * du shoot em up baptisé Poireau.\n
 * Poireau fait référence à la planète que le héros doit défendre contre une invasion ennemi. Le joueur 
 * contrôle un vaisseau et parcourt la galaxie pour défendre sa planète et ses semblables.\n
 * Cette documentation en ligne du projet Poireau devrait fournir toutes les indications 
 * nécessaires sur le rôle et le fonctionnement des fonctions et procédures (paramètres passés et retournés 
 * et éventuelles conditions). \n
 * Vous trouverez une description détaillée de toutes les structures et
 * types énumérés. \n
 * Enfin le rôle de chaque fichier source est expliqué.\n
 * L'organisation est très simple l'onglet classes donne accès aux renseignements concernant
 * les structures et types énumérés.\n
 * L'onglet files permet d'accéder à la liste des sources, en cliquant sur ces sources vous 
 * accéderez aux renseignements sur les fonctions et procédures et aux exemples de code.\n
 * Cette documentation est là pour vous aider n'hésitez pas à l'utiliser.
 */

/**  @brief File brief description
     Le fichier ArmePrincipale.h contient la declaration de toutes les fonctions et procédures nécessaires
     pour fournir au heros du jeu une arme principale*/

/** @brief La structure d'une arme principale est très simple elle ne comporte
 *  que le niveau de dégat de l'arme (un entier)*/
typedef struct 
{
	int niveau_arme;
	
} ArmePrincipale;


/** @brief Cette procédure initialise une arme principale en restaurant son niveau de dégat à 0
    @param [in,out] parme_principale
    @return none*/
void initArmePrincipale (ArmePrincipale* parme_principale);

/** @brief Cette fonction  reserve dans le tas l'espace necessaire pour une arme principale,
 *  l'initialise et retourne un pointeur sur l'arme principale créé
 *  @param none
    @return none*/
ArmePrincipale* creerArmePrincipale ();

/** @brief Cette procédure libère l'espace mémoire alloué dans le tas pour une arme principale
 *  @param [in,out] pparme_principale
    @return none*/
void detruireArmePrincipale (ArmePrincipale** pparme_principale);

/** @brief Cette fonction retourne le niveau de dégat d'une arme principale 
    @param [in,out] parme_principale
    @return parme_principale->niveau*/
const int getNiveauArmePrincipale (const ArmePrincipale* parme_principale);

/** @brief Cette procédure permet de changer le niveau de dégat d'une arme principale en fournissant
 *  une nouvelle valeur en donnée
 *  @param [in,out] parme_principale
 *  @param [in] niveau_arme
    @return none*/
void setNiveauArmePrincipale (ArmePrincipale* parme_principale, const int niveau_arme);



#endif
